/*
 * Copyright 2005-2013 finalist.cn. All rights reserved.
 * Support: http://www.finalist.cn
 * License: http://www.finalist.cn/license
 */
package com.finalist.dao;

import java.util.List;

import com.finalist.entity.BossArea;
import com.finalist.entity.BossArea.Type;

/**
 * Dao - BOSS地区
 * 
 * @author Finalist IT Group
 * @version 3.0
 */
public interface BossAreaDao extends BaseDao<BossArea, Long>
{

    /**
     * 查找顶级地区
     * 
     * @param count
     *            数量
     * @return 顶级地区
     */
    List<BossArea> findRoots(Integer count);

    /**
     * 查询某号段信息
     * 
     * @param noPrefix
     * @return
     */
    BossArea findInfoOfNoPrefix(String noPrefix);

    /**
     * 获取某号段信息并判断手机号某号段是否存在 范围(乐语联通、电信、还是移动号段 )
     * 
     * @param noPrefix
     *            号段
     * @param noPrefixType
     *            号段类型,0-中国移动、1-中国联通、2-中国电信
     * @return 号段信息
     */
    BossArea findInfoOfNoPrefix(String noPrefix, BossArea.Type noPrefixType);

    List<BossArea> findPrefixByCityName(String name);

    BossArea findByPrefix(String prefix);
    BossArea findByPrefix(String prefix,Boolean canCharge);
    /**
     * 根据号段查询bossarea对象
     * @param noPrefix
     * @return
     */
    BossArea findByNoPrefix(String noPrefix);

    /**
     * 根据所选城市查询对应的CODE值
     * 
     * @param selectedCity
     * @return BossArea
     */
    BossArea findCodeBySelectedCity(String selectedCity,BossArea.Type type);

    /**
     * 根据CODE值查询对应的城市
     * 
     * @param cityCode
     * @return BossArea
     */
    BossArea findCityByCityCode(String cityCode,BossArea.Type type);
   
    /**
     * 根据parentId查询对应的对象
     * 
     * @param bossArea
     * @return BossArea
     */
    BossArea findByParentId(Long parentId);

    /**
     * 查询所有有市区的地区对象
     * 
     * @param bossArea
     * @return BossArea
     */
    List<BossArea> findByAllProvince();

    /**
     * 根据城市名字查询CODE值
     */
    String findCodeByCityName(String cityName);
    String findCodeByName(String cityName);
    /**
     * 按号段类型查询号段区域信息
     * 
     * @param bossArea 号段区域信息
     * @return BossArea
     */
    List<BossArea> findBossAreaByType(Type type);
    /**
     * 根据cityCode查找地区
     */
    List<BossArea> findBossAreaByCityCode(String cityCode);

}